package com.da.javatest.leetCode;

/**
 * @author chenlida
 * @date 2019/1/7 16:17
 * @description
 */
public class Code766 {
    public static void main(String[] args) {
        //new Code766().isToeplitzMatrix(new int[][] {{1, 2, 3, 4}, {5, 1, 2, 3}, {9, 5, 1, 2}});
        //new Code766().isToeplitzMatrix(new int[][] {{11, 74, 0, 93}, {40, 11, 74, 7}});
        new Code766().isToeplitzMatrix(new int[][] {{41, 45}, {81, 41}, {73, 81}, {47, 73}, {0, 47}, {79, 76}});

    }

    public boolean isToeplitzMatrix(int[][] matrix) {
        ////第一行
        //int r = matrix.length, c = matrix[0].length;
        //for (int i = 0; i < c; i++) {
        //    int tmp = matrix[0][i];
        //    int j = 1, k = i + 1;
        //
        //    while (j < r && k < c) {
        //        if (matrix[j][k] != tmp) { return false; }
        //        j++;
        //        k++;
        //    }
        //}
        //
        ////第一列
        //for (int i = 1; i < r; i++) {
        //    int tmp = matrix[i][0];
        //    int j = i + 1, k = 1;
        //    while (j < r && k < c) {
        //        if (matrix[j][k] != tmp) { return false; }
        //        j++;
        //        k++;
        //    }
        //}
        //return true;
        int max1 = matrix.length;
        int max2 = matrix[0].length;
        if (max2 == 1) {
            return true;
        }

        //纵向
        for (int i = 0; i < max1; i++) {
            int r = matrix[i][0];
            for (int j = 1; j < max1 - i; j++) {
                if (j >= max2) {
                    break;
                }
                if (r != matrix[j + i][j]) {
                    return false;
                }
            }
        }
        //横向
        for (int i = 1; i < max2; i++) {
            int r = matrix[0][i];
            for (int j = 0; j < max1 - 1; j++) {
                if (i + j + 1 >= max2) {
                    break;
                }
                if (r != matrix[j + 1][j + i + 1]) {
                    return false;
                }
            }
        }
        return true;
    }

}
